﻿using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Presentation;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

#nullable enable

namespace PPTHelper.BLL.TimingRoot
{
    /// <summary>
    /// 此元素描述动画的常见行为。
    /// </summary>
    public class CommonBehaviorContainer : TimeNodeContainer
    {
        /// <summary>
        /// 该属性指定如何将动画值应用于特性的原始值。
        /// </summary>
        public EnumValue<BehaviorAdditiveValues>? Additive { get; set; }

        /// <summary>
        /// 当设置为“always”时，该属性会在每次迭代中生成重复的动画
        /// </summary>
        public EnumValue<BehaviorAccumulateValues>? Accumulate { get; set; }

        /// <summary>
        /// 此属性指定要使用的变换类型。
        /// </summary>
        public EnumValue<BehaviorTransformValues>? TransformType { get; set; }

        /// <summary>
        /// 该属性指定动画的起始值。
        /// </summary>
        public StringValue? From { get; set; }
        
        /// <summary>
        /// 该属性指定动画的结束值。
        /// </summary>
        public StringValue? To { get; set; }

        /// <summary>
        /// 此属性指定动画的相对偏移值。。
        /// </summary>
        public StringValue? By { get; set; }

        /// <summary>
        /// 此属性描述动画的运行时上下文。当前可理解的值是“PPT”和“IE”。
        /// 这用于指定在PPT幻灯片放映和IE HTML运行时设置动画时使用的行为。
        /// 透明效果就是一个例子。在IE中，透明度作为位图设置动画，
        /// 而在PPT中，形状的style.opacity属性用于设置透明度的动画。
        /// </summary>
        public StringValue? RuntimeContext { get; set; }

        /// <summary>
        /// 此属性指定行为应如何覆盖在目标元素上设置动画的属性的值。
        /// “childStyle”清除包含在目标元素中的子元素的属性。
        /// </summary>
        public EnumValue<BehaviorOverrideValues>? Override { get; set; }
        
        /// <summary>
        /// 作用的目标元素
        /// </summary>
        public TargetElement? TargetElement { get; set; }
       
        /// <summary>
        /// 作用的属性名
        /// </summary>
        public AttributeNameList? AttributeNameList { get; set; }

        public CommonBehaviorContainer()
        {
           
        }
    }
}
